home *** CD-ROM | disk | FTP | other *** search
- /*
- WASTE Demo Project:
- Initialization and Finalization Routines
-
- Copyright © 1993-1995 Marco Piovanelli
- All Rights Reserved
-
- C port by John C. Daub
- */
-
-
- #ifndef __DIALOGS__
- #include <Dialogs.h>
- #endif
-
- #ifndef __FONTS__
- #include <Fonts.h>
- #endif
-
- #ifndef __GESTALT__
- #include <Gestalt.h>
- #endif
-
- #ifndef __SCRAP__
- #include <Scrap.h>
- #endif
-
- #ifndef __TEXTSERVICES__
- #include <TextServices.h>
- #endif
-
- #ifndef __WEDEMOAPP__
- #include "WEDemoIntf.h"
- #endif
-
- #include "WEObjectHandlers.h"
-
-
-
- // static variables for the drag handlers
-
- static DragTrackingHandlerUPP sMyTrackingHandler;
- static DragReceiveHandlerUPP sMyReceiveHandler;
-
- OSErr Initialize( void )
- {
- long response;
- long scrapResult;
- short i;
- PScrapStuff scrapReturn;
- OSErr err;
-
- // expand the zone to its maximum size
-
- MaxApplZone();
-
- // allocate some extra master pointer blocks
-
- for ( i = 0; i < 6; i++ )
- MoreMasters();
-
- // initialize the Toolbox
-
- InitGraf(&qd.thePort);
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit(); // tho we use WASTE for text stuff, dialogs, etc all use TextEdit so don't remove this!
- InitDialogs(NULL);
- InitCursor();
- FlushEvents(everyEvent, 0);
-
- // if desk scrap is too large, unload it
-
- scrapReturn = InfoScrap();
- if ( scrapReturn->scrapSize > kScrapThreshold )
- scrapResult = UnloadScrap();
-
- // make sure system software versino is 7.0 or newer (classic 68K only)
-
- #if !GENERATINGCFM
- if ( (Gestalt(gestaltSystemVersion, &response) != noErr ) || (response < kMinSystemVersion) )
- {
- SetCursor( &qd.arrow );
- response = Alert( kAlertNeedSys7, NULL );
- return -1;
- }
- #endif
-
- // determine whether color Quickdraw is available
-
- gHasColorQD = (Gestalt(gestaltQuickdrawVersion, &response) == noErr)
- && (response >= gestalt8BitQD);
-
- // determine whether the Drag Manager is available
-
- gHasDragAndDrop = (Gestalt( gestaltDragMgrAttr, &response ) == noErr )
- && BTST( response, gestaltDragMgrPresent );
-
- #if GENERATINGCFM
- // additional check needed if DragLib is weak-linked
- gHasDragAndDrop = gHasDragAndDrop && (&NewDrag != NULL);
- #endif
-
- // determine whether the Text Services Manager is available
-
- gHasTextServices = (Gestalt(gestaltTSMgrVersion, &response) == noErr);
-
- // register this application with the TSM
-
- if ( gHasTextServices )
- {
- if ((err = InitTSMAwareApplication()) != noErr)
- goto cleanup;
- }
-
- // install default drag handlers
-
- if ( gHasDragAndDrop )
- {
- sMyTrackingHandler = NewDragTrackingHandlerProc( MyTrackingHandler );
- sMyReceiveHandler = NewDragReceiveHandlerProc( MyReceiveHandler );
-
- if ((err = InstallTrackingHandler( sMyTrackingHandler, NULL, NULL )) != noErr)
- goto cleanup;
-
- if ((err = InstallReceiveHandler( sMyReceiveHandler, NULL, NULL )) != noErr)
- goto cleanup;
- }
-
- // install the sample object handlers for pictures and sounds
-
- if ((err = WEInstallObjectHandler(kTypePicture, weNewHandler,
- (UniversalProcPtr) NewWENewObjectProc(HandleNewPicture), NULL)) != noErr)
- goto cleanup;
-
- if ((err = WEInstallObjectHandler(kTypePicture, weDisposeHandler,
- (UniversalProcPtr) NewWEDisposeObjectProc(HandleDisposePicture), NULL)) != noErr)
- goto cleanup;
-
- if ((err = WEInstallObjectHandler(kTypePicture, weDrawHandler,
- (UniversalProcPtr) NewWEDrawObjectProc(HandleDrawPicture), NULL)) != noErr)
- goto cleanup;
-
- if ((err = WEInstallObjectHandler(kTypeSound, weNewHandler,
- (UniversalProcPtr) NewWENewObjectProc(HandleNewSound), NULL)) != noErr)
- goto cleanup;
-
- if ((err = WEInstallObjectHandler(kTypeSound, weDrawHandler,
- (UniversalProcPtr) NewWEDrawObjectProc(HandleDrawSound), NULL)) != noErr)
- goto cleanup;
-
- if ((err = WEInstallObjectHandler(kTypeSound, weClickHandler,
- (UniversalProcPtr) NewWEClickObjectProc(HandleClickSound), NULL)) != noErr)
- goto cleanup;
-
- // perform other initialization chores
-
- if ((err = InitializeEvents()) != noErr)
- goto cleanup;
-
- if ((err = InitializeMenus()) != noErr)
- goto cleanup;
-
- // clear result code
- err = noErr;
-
- cleanup:
- if ( err != noErr )
- ErrorAlert( err );
-
- return err;
- }
-
-
- void Finalize( void )
- {
- // remove drag handlers
-
- if ( gHasDragAndDrop )
- {
- RemoveTrackingHandler( sMyTrackingHandler, NULL);
- RemoveReceiveHandler( sMyReceiveHandler, NULL );
- }
-
- // notify text services that we're closing down
-
- if ( gHasTextServices )
- {
- CloseTSMAwareApplication();
- }
- }